/* IDA* 迭代加深A*算法
* 统计中间8个方格中出现次数最多的数出现了多少次，记为 k 次。
* 每次操作会从中间8个方格中移出一个数，再移入一个数，所以最多会减少一个不同的数。
* 因此估价函数可以设为 8−k。
*
* 剪枝：记录上一次的操作，本次操作避免枚举上一次的逆操作。
*/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;
// #define ONLINE_GUDGE
const int N = 24;

int op[8][7] = { // 记录每一种操作对应的数字坐标
    {0, 2, 6, 11, 15, 20, 22},
    {1, 3, 8, 12, 17, 21, 23},
    {10, 9, 8, 7, 6, 5, 4},
    {19, 18, 17, 16, 15, 14, 13},
    {23, 21, 17, 12, 8, 3, 1},
    {22, 20, 15, 11, 6, 2, 0},
    {13, 14, 15, 16, 17, 18, 19},
    {4, 5, 6, 7, 8, 9, 10}
};
int center[8] = {6, 7, 8, 11, 12, 15, 16, 17}; // 记录目标的八个格子的数字坐标 
int opposite[8] = {5, 4, 7, 6, 1, 0, 3, 2}; // 记录每一种操作的逆操作
int path[100], q[N];

int f() // 估价函数
{
    int sum[4]  ={0};
    for(int i = 0; i < 8; i++) sum[q[center[i]]]++; // 记录目标八个格子中每个数字出现的次数

    int s = 0;
    for(int i = 1; i <= 3; i++) // 找出出现次数最多的数的个数
        s = max(sum[i], s);
        return 8 - s;
}

void operate(int x)
{
    int t = q[op[x][0]];
    for(int i=0; i<6; i++) // 每个格子向后移动一个
        q[op[x][i]] = q[op[x][i+1]];
    q[op[x][6]] = t;
}

bool dfs(int depth, int max_depth, int last)
{
    if(depth + f() > max_depth) return false;
    if(f() == 0) return true;

    for(int i = 0; i < 8; i++)
    {
        if(i != opposite[last]) // 不是把上一次操作做相反操作
        {
            operate(i); // 枚举每一种操作
            path[depth] = i;
            if(dfs(depth+1, max_depth, last)) return true;
            operate(opposite[i]); // 恢复现场
        }
    }
    return false;
}

int main()
{

    #ifdef ONLINE_GUDGE

    #else
    freopen("./in.txt", "r", stdin);
    #endif
    ios::sync_with_stdio(false);   
	cin.tie(0);
    
    while (scanf("%d", &q[0]), q[0])
    {
        for (int i = 1; i < N; i ++ ) scanf("%d", &q[i]);
        int depth = 0;
        while (!dfs(0, depth, -1)) // 当前深度无法得到答案
        {
            depth ++ ;
        }
        if (!depth) printf("No moves needed");
        for (int i = 0; i < depth; i ++ ) printf("%c", 'A' + path[i]);
        printf("\n%d\n", q[6]);
    }
    return 0;
}